// 泛型 值的是在定义函数时 不预先指定具体类型，而是在使用函数时 再传递类型的一种特性
// <t> 表示泛型函数 ，T是类型参数 可以是任何类型，在使用的时候赋值
function fun<T, U = string>(a: T, b: U): T { //T类型的形态
  return a
}

fun<number, number>(100, 200)
//泛型写法
fun<string>('张三', 'true')

interface ObjTyp<T, K> {
  name: string,
  sex: K,
  age: T
}
let obj1: ObjTyp<number, boolean> = {
  name: '张三',
  sex: false,
  age: 1111
}